package org.jeecg.modules.online.desform.util.convert;

import com.alibaba.fastjson.JSONObject;
import lombok.Data;

import java.util.function.Function;

/**
 * 表单设计器数据转换器
 */
@Data
public class ConvertItem {

    /**
     * 被转换的值
     */
    private String value;
    /**
     * 被转换的表单设计器组件
     */
    private JSONObject element;
    /**
     * 实际转换器方法
     */
    Function<ConvertItem, Object> converter;

    public ConvertItem() {
    }

    public ConvertItem(String value, JSONObject element) {
        this.value = value;
        this.element = element;
    }

    /**
     * 进行数据转换
     */
    public Object doConvert() {
        if (this.converter == null) {
            return this.value;
        }
        return this.converter.apply(this);
    }

    /**
     * 进行数据转换
     */
    public Object doConvert(Object value) {
        if (value == null) {
            this.value = "";
        } else {
            this.value = value.toString();
        }
        return doConvert();
    }

}
